iT邦幫忙

0

python使用chardet來避免文件編碼錯誤

  • 分享至 

  • xImage
  •  

在讀取文件時,有時會遇到編碼錯誤的訊息。

SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0xc4 in position 0:
invalid continuation byte

如果文件已知使用utf-8來編碼,可以加上encoding參數:

with open('/path/to/file', 'r', encoding="utf-8") as f:
    print(f.read())

那我們也可以安裝這個chardet套件來偵測未知文件的編碼:

pip install chardet
chardet.detect("Today is tuesday.")

可以查看字典型態的回傳:
{'confidence': 1.0, 'encoding': 'ascii'}

那也可以應用在flask上來讀取上傳的文件:

from flask import Flask,request
import chardet
import pandas as pd


app = Flask(__name__)

@app.route("/", methods=["POST"])
def hello_world():
    file = request.files.get('file')
    codingType = chardet.detect(file.read() )
    print(codingType)
    file.seek(0)
    fileContent_csv = pd.read_csv(file, index_col=None ,encoding= codingType['encoding'])
    fileContent_pd = pd.DataFrame(data=fileContent_csv)


    return "<p>Hello, World!</p>"


if __name__ == "__main__":
    app.run(debug=True,threaded=True)    


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言